package com.chengyu.core.utils;

import java.math.BigDecimal;
import java.text.DecimalFormat;

public class NumberFormat {


    public static BigDecimal numberFormat(BigDecimal obj) {
//        BigDecimal.setScale();//用于格式化小数点
//        setScale(1);//表示保留以为小数，默认用四舍五入方式
//        setScale(1,BigDecimal.ROUND_DOWN);//直接删除多余的小数位，如2.35会变成2.3
//        setScale(1,BigDecimal.ROUND_UP);//进位处理，2.35变成2.4
//        setScale(1,BigDecimal.ROUND_HALF_UP);//四舍五入，2.35变成2.4
//        setScaler(1,BigDecimal.ROUND_HALF_DOWN);//四舍五入，2.35变成2.3，如果是5则向下舍
      return   obj.setScale(2,BigDecimal.ROUND_DOWN);//直接删除多余的小数位，如2.356会变成2.35

    }

    /**
     * @desc 1.0~1之间的BigDecimal小数，格式化后失去前面的0,则前面直接加上0。
     * 2.传入的参数等于0，则直接返回字符串"0.00"
     * 3.大于1的小数，直接格式化返回字符串
     * @param obj 传入的小数
     * @return
     */
    public static String numberFormatToString(BigDecimal obj) {

//        BigDecimal.setScale();//用于格式化小数点
//        setScale(1);//表示保留以为小数，默认用四舍五入方式
//        setScale(1,BigDecimal.ROUND_DOWN);//直接删除多余的小数位，如2.35会变成2.3
//        setScale(1,BigDecimal.ROUND_UP);//进位处理，2.35变成2.4
//        setScale(1,BigDecimal.ROUND_HALF_UP);//四舍五入，2.35变成2.4
//        setScaler(1,BigDecimal.ROUND_HALF_DOWN);//四舍五入，2.35变成2.3，如果是5则向下舍

        obj.setScale(2,BigDecimal.ROUND_DOWN);//直接删除多余的小数位，如2.356会变成2.35

        DecimalFormat df = new DecimalFormat("#.00");
        if (obj.compareTo(BigDecimal.ZERO) == 0) {
            return "0.00";
        } else if(obj.compareTo(BigDecimal.ZERO) > 0 && obj.compareTo(new BigDecimal(1))
                < 0){
            return "0" + df.format(obj).toString();
        }else {
            return df.format(obj).toString();
        }


    }




    public static void test(String[] s){
//        System.out.println(numberFormat(new BigDecimal("3.435")));
//        System.out.println(numberFormat(new BigDecimal(0)));
//        System.out.println(numberFormat(new BigDecimal("0.00")));
//        System.out.println(numberFormat(new BigDecimal("0.001")));
//        System.out.println(numberFormat(new BigDecimal("0.006")));
//        System.out.println(numberFormat(new BigDecimal("0.206")));




        //	BigDecimal num1 = new BigDecimal("11.111");
    //	BigDecimal num2 = new BigDecimal("1");
    //	BigDecimal num3 = new BigDecimal("-11.111");
    //
    //	//加法
    //	BigDecimal result1 = num1.add(num2);
    //    System.out.println("num1 + num2 = " + result1);
    //
    //	//减法
    //	BigDecimal result2 = num1.subtract(num2);
    //    System.out.println("num1 - num2 = " + result2);
    //
    //	//乘法
    //	BigDecimal result3 = num1.multiply(num2);
    //    System.out.println("num1 * num2 = " + result3);
    //
    //	//除法（保留小数20位）
    //	BigDecimal result5 = num1.divide(num2,20,BigDecimal.ROUND_HALF_UP);
    //    System.out.println("num1 / num2 = " + result5);
    //
    //	//绝对值
    //	BigDecimal result4 = num3.abs();
    //    System.out.println("num3的绝对值  = " + result4);


    //	NumberFormat currency = NumberFormat.getCurrencyInstance(); //建立货币格式化引用
    //	NumberFormat percent = NumberFormat.getPercentInstance();  //建立百分比格式化引用
    //    percent.setMaximumFractionDigits(3); //百分比小数点最多3位
    //
    //	BigDecimal loanAmount = new BigDecimal("15000.48"); //贷款金额
    //	BigDecimal interestRate = new BigDecimal("0.008"); //利率
    //	BigDecimal interest = loanAmount.multiply(interestRate); //相乘
    //
    //    System.out.println("贷款金额:\t" + currency.format(loanAmount));
    //    System.out.println("利率:\t" + percent.format(interestRate));
    //    System.out.println("利息:\t" + currency.format(interest));
    //
    //	贷款金额: ￥15,000.48
    //	利率: 0.8%
    //	利息: ￥120.00

    }

//    3.44
//            0.00
//            0.00
//            0.00
//            0.01
//            0.21




}